#include <stdio.h>
#include <stdlib.h>

struct pencil
{
    int hardness;
    char marker;
    int number;
};

/*
为了书写使用方便，又从“（*）.”运算符演化出“->”运算符。
指向结构变量指针的名字 -> 成员名字


结构数组pen[0]，它的成员hardness的值可以通过pen[0].hardness取得
指针变量的值是它所指向的数据的地址，故用结构指针pen来求结构成员
    例如hardness的值，可通过语句(*pen).hardness来取得
    这里的圆括号不能省略。因为“．”的运算优先级高于“*”
    指向结构变量指针的名字 -> 成员名字


对结构变量本身进行操作时，必须用“．”运算符。
但若使用结构指针，必须使用箭头运算符。

*/
void main()
{
    struct pencil p[3]; // 第9行定义p[3]
    struct pencil *pen; // 第10行定义*pen

    p[0].hardness = 2;
    p[0].marker = 'F';
    p[0].number = 485;
    p[1].hardness = 0;
    p[1].marker = 'G';
    p[1].number = 38;
    p[2].hardness = 3;
    p[2].marker = 'E';
    p[2].number = 108;
    printf("Hardness Marker Number\n");
    for (pen = p; pen <= p + 2; ++pen)
        printf("%4d%8c%8d\n",
               (*pen).hardness, (*pen).marker,
               (*pen).number);
    system("pause");
}